<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        // JS 内置时间构造器 new Date( 时间参数值 )
        //      let d = new Date();
        //      let d = new Date(milliseconds);
        //      let d = new Date(dateString);
        //      let d = new Date(year, month, day, hours, minutes, seconds, milliseconds);
        console.log( Date );
        // 创建一个基于当前代码运行时得当前计算机得系统时间得时间对象
        let day = new Date();
        console.log( day );
        
        // 基于指定得毫秒值，创建时间对象
        let day1 = new Date(1741585293000);
        console.log(day1);
        
        // 基于字符串得时间格式，创建时间对象
        //      yyyy-MM-dd HH:mm:ss
        //      yyyy/MM/dd HH:mm:ss
        let day2 = new Date("2015-12-21 18:36:11");
        console.log(day2);
        let day3 = new Date("2015/12/21 18:36:11");
        console.log(day3);

        // 通过提供分解数值创建时间对象
        //      注意：月份 0~11
        let day4 = new Date(2013,0,20,13,34,54);
        console.log(day4);

        // JS得时间对象可以通过超值进行自动计算操作
        // 传递得是 3月得第0天，创建时JS会自动借月，获取上个月得最后一天
        let day5 = new Date(2013,2,0); 
        console.log(day5);
        let day6 = new Date(2024,2,0);
        console.log(day6);

        let day7 = new Date(2024,2,1,25);
        console.log(day7);
        

        // getDate()	返回月中的第几天（从 1 到 31）。
        // getDay()	返回星期几（0-6）。
        // getFullYear()	返回年份。
        // getHours()	返回小时（从 0-23）。
        // getMilliseconds()	返回毫秒（0-999）。
        // getMinutes()	返回分钟（从 0-59）。
        // getMonth()	返回月份（从 0-11）。
        // getSeconds()	返回秒数（从 0-59）。

        console.log( day7.getFullYear() );
        console.log( day7.getMonth()+1  );
        
        // toLocaleDateString()	使用区域设置约定将 Date 对象的日期部分作为字符串返回。
        // toLocaleTimeString()	使用区域设置约定将 Date 对象的时间部分作为字符串返回。
        // toLocaleString()	使用区域设置约定将 Date 对象转换为字符串。
        // toString()	将 Date 对象转换为字符串。 => 默认字符串转换方法
        console.log( day7 ); // 直接打印会默认调用 toString 方法
        console.log( day7.toString() );

        console.log( day7.toLocaleString() );
        console.log( day7.toLocaleDateString() );
        console.log( day7.toLocaleTimeString() );
        
        // setDate()	设置 Date 对象中月的某一天。
        // setFullYear()	设置日期对象的年份
        // setHours()	设置日期对象的小时。
        // setMilliseconds()	设置日期对象的毫秒数。
        // setMinutes()	设置日期对象的分钟数。
        // setMonth()	设置日期对象的月份。0~11
        // setSeconds()	设置日期对象的秒数。
        
        let day8 = new Date();
        console.log( day8.getFullYear() );
        
        day8.setFullYear(2013);

        console.log( day8.toLocaleString() );
        

        // getTime() 获取时间毫秒值
        // setTime() 设置时间毫秒值

        // 古语云“三天打鱼两天晒网”，定义一个函数接受两个时间参数，
        //          计算在这两个之间之间多少天打鱼多少天晒网
        //          默认起始第一天打鱼
        function calcTotal(d1,d2){
            d1 = new Date(d1);
            d2 = new Date(d2);
            // 获取时间差的毫秒值
            // console.log(d2-d1);
            // console.log(d2.getTime()-d1.getTime());
            let num = Math.abs(d2-d1);
            // num = num/1000/60/60/24; // 转换为天
            num = num/1000/3600/24;
            // 起始时间也算一天
            num += 1;
            // console.log(num);
            
            let count = Math.floor( num / 5 ); // 五天一轮，有多少轮
            let tempNum = num % 5;
            let workDay = count * 3;
            let waitDay = count * 2;
            if(tempNum<=3){
                workDay += tempNum;
            }else{
                workDay += 3;
                waitDay += tempNum-3;
            }
            // console.log(workDay,waitDay);
            return {
                work:workDay,
                wait:waitDay
            }

        }

        let res = calcTotal("2025/01/12","2025/01/01")
        console.log(res);
        

    </script>
</head>
<body>
    
</body>
</html>